package cn.com.dhcc.turbo.service.registry;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.com.dhcc.app.core.dao.CrudDao;
import cn.com.dhcc.app.core.exception.DaoException;
import cn.com.dhcc.app.core.exception.ServiceException;
import cn.com.dhcc.app.core.service.AbstractCrudService;
import cn.com.dhcc.turbo.dao.registry.PipelineRegionDao;
import cn.com.dhcc.turbo.entity.registry.NodePipeline;
import cn.com.dhcc.turbo.entity.registry.PipelineRegion;

/**
 * 传输通道service
 * 
 * @日期：2014-5-20 下午2:11:46
 * @作者：张洪涛
 * @版权所有：东华软件
 * @版本：1.0
 */
@Service
public class PipelineRegionService extends AbstractCrudService<PipelineRegion> {
	
	@Autowired
	PipelineRegionDao pipelineRegionDao;
	

	/**
	 * 根据一个节点信息获取通道信息
	 * @param nodecode
	 * @return
	 */
	public NodePipeline getNodePieline(String nodecode) throws ServiceException {
		try {
			return pipelineRegionDao.getNodePieline(nodecode);
		} catch (DaoException e) {
			throw new ServiceException("根据节点编码获取通道信息", e);
		}
	}
	
	/**
	 * 得到最小负载的通道信息
	 * @param nodecode
	 * @return
	 * @throws DaoException
	 */
	public NodePipeline getMinLoad(String nodecode)throws ServiceException {
		try {
			return pipelineRegionDao.getMinLoad(nodecode);
		} catch (DaoException e) {
			throw new ServiceException("根据节点编码获取通道信息", e);
		}
	}
	/**
	 * 添加nodecode给某个通道，通过动态负载均衡
	 * @param nodecode
	 */
	public void insert(String nodecode) throws ServiceException {
		try {
			 pipelineRegionDao.insert(nodecode);
		} catch (DaoException e) {
			throw new ServiceException("根据节点编码获取通道信息", e);
		}
	}
	/**
	 * 根据队列信息获取通道对应的ip
	 * @return
	 */
	public String getManagedIP(String queue) {
		return pipelineRegionDao.getManagedIP(queue);
	}


	@Override
	public CrudDao<PipelineRegion> getCrudDao() {
		return this.pipelineRegionDao;
	}
	
	
	
}
